home *** CD-ROM | disk | FTP | other *** search
- package com.extensibility.xml;
-
- import com.extensibility.util.StringUtilities;
- import com.extensibility.xml.dt.DataType;
- import com.extensibility.xml.dt.DataTypeIntf;
- import com.extensibility.xml.dt.Facet;
- import java.util.Enumeration;
- import java.util.Hashtable;
- import java.util.Vector;
-
- public class SOX2Writer extends SchemaWriter {
- ElemProxy elemProxy = new ElemProxy(this);
- AttrProxy attrProxy = new AttrProxy(this);
- DTProxy dtProxy = new DTProxy(this);
-
- public SOX2Writer(SchemaIntf var1) {
- super(var1, var1.getURI());
- }
-
- public SOX2Writer(SchemaIntf var1, URI var2) {
- super(var1, var2);
- }
-
- private String qualifiedAttrName(String var1) {
- AttributeDeclaration var2 = (AttributeDeclaration)super.schema.getNamedDeclaration(var1, Class.forName("com.extensibility.xml.AttributeDeclaration"));
- return var2 != null && var2.isGlobal() ? ((SchemaWriter)this).getQName(var1, Class.forName("com.extensibility.xml.AttributeDeclaration")) : var1;
- }
-
- private void writeExplain(SXE var1, BaseDeclaration var2) {
- Enumeration var3 = var2.getComments();
- if (var3 != null && var3.hasMoreElements()) {
- int var4 = 0;
-
- while(var3.hasMoreElements()) {
- Comment var5 = (Comment)var3.nextElement();
- if (var5.getKind().equals("USAGE")) {
- ++var4;
- }
- }
-
- if (var4 != 0) {
- var3 = var2.getComments();
- var1.writeElem("explain", -1);
-
- while(var3.hasMoreElements()) {
- Comment var7 = (Comment)var3.nextElement();
- if (var7.getKind().equals("USAGE")) {
- this.writeValidHTML(var1, var7.getComment(false));
- }
- }
-
- var1.flush("explain");
- }
- }
- }
-
- private void writeDatatypeNameRef(SXE var1, DataTypeIntf var2, boolean var3) {
- String var4 = "datatype";
- if (var2 == null) {
- var1.writeAttr(var4, "string");
- } else {
- Object var5 = null;
- String var6;
- if (!var3) {
- var6 = super.schema.getDataTypeSource(var2);
- } else {
- var6 = BaseFlavor.getSourceCode(super.schema.getFlavorName(), var2.getBaseType());
- }
-
- if (var6.indexOf(58) >= 0) {
- var1.writeAttr("prefix", var6.substring(0, var6.indexOf(58)));
- var1.writeAttr(var4, var6.substring(var6.indexOf(58) + 1));
- } else {
- var1.writeAttr(var4, var6);
- }
-
- }
- }
-
- private void writeEnumeration(SXE var1, BaseDeclaration var2, boolean var3) {
- Object var4 = null;
- Object var5 = null;
- Object var6 = null;
- DataType var9;
- Enumeration var10;
- Hashtable var11;
- if (var2 instanceof DataTypeDeclaration) {
- var9 = ((DataTypeDeclaration)var2).getDataType();
- Facet var7 = var9.getFacet(Facet.FACET_ENUM_NAME);
- var11 = var7.getExplains();
- Vector var8 = (Vector)var7.getValue();
- var10 = var8.elements();
- } else {
- if (!(var2 instanceof AttributeDeclaration)) {
- return;
- }
-
- var9 = ((AttributeDeclaration)var2).getDataType();
- var10 = ((AttributeDeclaration)var2).getChoices(var2.getSchema(), true);
- var11 = ((AttributeDeclaration)var2).getChoicesExplains();
- }
-
- var1.writeElem("enumeration", -1);
- this.writeDatatypeNameRef(var1, var9, var3);
-
- while(var10.hasMoreElements()) {
- String var12 = (String)var10.nextElement();
- if (var11 != null && var11.containsKey(var12)) {
- String var13 = (String)var11.get(var12);
- if (var13 != null) {
- var1.writeElem("explain", -1);
- this.writeValidHTML(var1, var13);
- var1.flush("explain");
- }
- }
-
- var1.writeElem("option", -1);
- var1.writeText(var12);
- var1.flush("option");
- }
-
- var1.flush("enumeration");
- }
-
- private void writeDataTypeData(SXE var1, BaseDeclaration var2, DataTypeIntf var3, boolean var4) {
- if (var3.hasFacet(Facet.FACET_ENUM_NAME)) {
- this.writeEnumeration(var1, var2, var4);
- } else if (var3.hasFacet(Facet.FACET_MAXLENGTH_NAME)) {
- var1.writeElem("varchar", -1);
- this.writeDatatypeNameRef(var1, var3, var4);
- Facet var5 = var3.getFacet(Facet.FACET_MAXLENGTH_NAME);
- var1.writeAttr("maxlength", (String)var5.getValue());
- var1.flush("varchar");
- } else if (!var3.hasFacet(Facet.FACET_DECIMALS_NAME) && !var3.hasFacet(Facet.FACET_DIGITS_NAME) && !var3.hasFacet(Facet.FACET_MAXEX_NAME) && !var3.hasFacet(Facet.FACET_MINEX_NAME) && !var3.hasFacet(Facet.FACET_MAX_NAME) && !var3.hasFacet(Facet.FACET_MIN_NAME)) {
- if (var4) {
- var1.writeElem("scalar", -1);
- this.writeDatatypeNameRef(var1, var3, var4);
- var1.flush("scalar");
- }
- } else {
- var1.writeElem("scalar", -1);
- this.writeDatatypeNameRef(var1, var3, var4);
- Object var6 = null;
- if (var3.hasFacet(Facet.FACET_DIGITS_NAME)) {
- Facet var7 = var3.getFacet(Facet.FACET_DIGITS_NAME);
- var1.writeAttr("digits", (String)var7.getValue());
- }
-
- if (var3.hasFacet(Facet.FACET_DECIMALS_NAME)) {
- Facet var8 = var3.getFacet(Facet.FACET_DECIMALS_NAME);
- var1.writeAttr("decimals", (String)var8.getValue());
- }
-
- if (var3.hasFacet(Facet.FACET_MIN_NAME)) {
- Facet var9 = var3.getFacet(Facet.FACET_MIN_NAME);
- var1.writeAttr("minvalue", (String)var9.getValue());
- }
-
- if (var3.hasFacet(Facet.FACET_MINEX_NAME)) {
- Facet var10 = var3.getFacet(Facet.FACET_MINEX_NAME);
- var1.writeAttr("minexclusive", (String)var10.getValue());
- }
-
- if (var3.hasFacet(Facet.FACET_MAX_NAME)) {
- Facet var11 = var3.getFacet(Facet.FACET_MAX_NAME);
- var1.writeAttr("maxvalue", (String)var11.getValue());
- }
-
- if (var3.hasFacet(Facet.FACET_MAXEX_NAME)) {
- Facet var12 = var3.getFacet(Facet.FACET_MAXEX_NAME);
- var1.writeAttr("maxexclusive", (String)var12.getValue());
- }
-
- var1.flush("scalar");
- }
-
- }
-
- private void writeTopLevelComments(SXE var1, BaseDeclaration var2) {
- Enumeration var3 = var2.getComments();
- if (var3 != null && var3.hasMoreElements()) {
- int var4 = 0;
-
- while(var3.hasMoreElements()) {
- Comment var5 = (Comment)var3.nextElement();
- if (!var5.getKind().equals("USAGE")) {
- ++var4;
- }
- }
-
- if (var4 != 0) {
- var3 = var2.getComments();
-
- while(var3.hasMoreElements()) {
- Comment var7 = (Comment)var3.nextElement();
- if (!var7.getKind().equals("USAGE") && !var7.getKind().equals("INTRO")) {
- var1.writeElem("comment", -1);
- var1.writeText(var7.getComment(true));
- var1.flush("comment");
- }
- }
-
- }
- }
- }
-
- public void writeAttrGroup(SXE var1, Enumeration var2, AttrProxy var3) {
- while(var2.hasMoreElements()) {
- AttributeGroupMember var4 = (AttributeGroupMember)var2.nextElement();
- if (var4 instanceof AttributeDeclaration) {
- var3.setDecl((AttributeDeclaration)var4);
- var3.writeType(var1, true);
- }
- }
-
- }
-
- protected void writeHeader(SXE var1) {
- var1.writeDocType("schema", "urn:x-commerceone:document:com:commerceone:xdk:xml:schema.dtd$1.0");
- var1.writeLineBreak();
- var1.writeComment("Generated by XML Authority. Conforms to Commerce One SOX 2.0");
- var1.writeElem("schema");
- URI var2 = super.schema.getNamespace();
- if (var2 == null || var2.toSource().equals("")) {
- var2 = super.schema.getURI();
- }
-
- var1.writeAttr("uri", var2.getFullName());
- String var3 = super.schema.getSchemaPrefix();
- if (var3 != null && var3.length() > 0) {
- var1.writeAttr("prefix", var3);
- }
-
- var1.writeAttr("soxlang-version", "V0.2.2");
- if (super.schema.getNamedNamespace("exv") == null && ((SchemaWriter)this).getShowErrors()) {
- var1.writeLineBreak();
- var1.writeAttr("xmlns:exv", "urn:extensibility:exv:errors");
- }
-
- boolean var4 = false;
- Enumeration var5 = null;
- if (super.uri.getBaseURI() == null) {
- var5 = super.schema.getComments();
- } else {
- String var6 = DTDUtilities.makeValidName(super.uri.getShortName());
- ExternalSubset var7 = (ExternalSubset)super.schema.getNamedDeclaration(var6, Class.forName("com.extensibility.xml.ExternalSubset"));
- var4 = true;
- if (var7 != null) {
- var5 = ((BaseDeclaration)var7).getComments();
- }
- }
-
- if (var5 != null && var5.hasMoreElements()) {
- var1.writeElem("intro", -1);
-
- while(var5.hasMoreElements()) {
- Comment var8 = (Comment)var5.nextElement();
- if (!var4 || var8.getKind().equals("INTRO")) {
- this.writeValidHTML(var1, var8.getComment(false));
- }
- }
-
- var1.flush("intro");
- }
- }
-
- protected void writeNamespaces(SXE var1, Enumeration var2) {
- while(var2.hasMoreElements()) {
- NamespaceDeclaration var3 = (NamespaceDeclaration)var2.nextElement();
- this.writeTopLevelComments(var1, var3);
- String var4 = ((BaseDeclaration)var3).getName();
- var1.writeElem("namespace");
- if (var4.length() > 0) {
- var1.writeAttr("prefix", var4);
- }
-
- if (var3.getNamespace() != null) {
- var1.writeAttr("namespace", var3.getNamespace());
- } else {
- var1.writeAttr("namespace", "");
- }
-
- this.writeExplain(var1, var3);
- var1.flush("namespace");
- }
-
- }
-
- protected void writeIncludes(SXE var1, Enumeration var2) {
- for(; var2.hasMoreElements(); var1.flush("join")) {
- ExternalSubset var3 = (ExternalSubset)var2.nextElement();
- this.writeTopLevelComments(var1, var3);
- var1.writeElem("join", -1);
- var1.writeAttr("datatype", "schema");
- String var4 = var3.getSystemURI().toSource();
- var1.writeAttr("system", var4);
- if (((BaseDeclaration)var3).hasComments()) {
- this.writeExplain(var1, var3);
- }
- }
-
- }
-
- private void writeValidHTML(SXE var1, String var2) {
- int var3 = StringUtilities.skipWhite(var2, 0);
- if (var3 < var2.length() && var2.charAt(var3) != '<') {
- var1.writeRawText("<p>");
- var1.writeRawText(var2);
- var1.writeRawText("</p>");
- } else {
- var1.writeRawText(var2);
- }
-
- }
-
- protected SchemaWriter.DeclWriterProxyIntf createProxy(ElementDeclaration var1) {
- if (this.elemProxy == null) {
- this.elemProxy = new ElemProxy(this);
- }
-
- this.elemProxy.setDecl(var1);
- return this.elemProxy;
- }
-
- protected SchemaWriter.DeclWriterProxyIntf createProxy(AttributeDeclaration var1) {
- if (this.attrProxy == null) {
- this.attrProxy = new AttrProxy(this);
- }
-
- this.attrProxy.setDecl(var1);
- return this.attrProxy;
- }
-
- protected SchemaWriter.DeclWriterProxyIntf createProxy(DataTypeDeclaration var1) {
- if (this.dtProxy == null) {
- this.dtProxy = new DTProxy(this);
- }
-
- this.dtProxy.setDecl(var1);
- return this.dtProxy;
- }
-
- // $FF: synthetic method
- static void access$2000171(SOX2Writer var0, SXE var1, BaseDeclaration var2) {
- var0.writeTopLevelComments(var1, var2);
- }
-
- // $FF: synthetic method
- static void access$2000271(SOX2Writer var0, SXE var1, BaseDeclaration var2, DataTypeIntf var3, boolean var4) {
- var0.writeDataTypeData(var1, var2, var3, var4);
- }
-
- // $FF: synthetic method
- static void access$2000371(SOX2Writer var0, SXE var1, DataTypeIntf var2, boolean var3) {
- var0.writeDatatypeNameRef(var1, var2, var3);
- }
-
- // $FF: synthetic method
- static void access$2000071(SOX2Writer var0, SXE var1, BaseDeclaration var2) {
- var0.writeExplain(var1, var2);
- }
- }
-